package com.hochschild.sgv.service.implementacion;

import com.hochschild.sgv.dao.EquipoDao;
import com.hochschild.sgv.dao.impl.EquipoDaoImpl;
import com.hochschild.sgv.domain.PersonalSap;
import com.hochschild.sgv.sap.ConexionSAP;
import com.hochschild.sgv.service.EquipoManager;
import com.hochschild.sgv.service.PlanificacionManager;
import com.hochschild.sgv.struts.action.PlanificacionAction;
import com.hochschild.sgv.util.FechaUtil;
import com.sap.mw.jco.JCO.Table;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SimpleEquipoManager implements EquipoManager {

    private EquipoDao equipoDao;

    public void setEquipoDao(EquipoDao equipoDao) {
        this.equipoDao = equipoDao;
    }
    
    
    public List<PersonalSap> consultarEquipo(String idUsuario, String excluirIdUsuario, String idPuestoUsuario) {
        System.out.println("consultarEquipo: " + idUsuario + " excluirIdUsuario: " + excluirIdUsuario);
        List<PersonalSap> personals = new ArrayList<PersonalSap>();
        ConexionSAP conexionSAP = new ConexionSAP();
        SimplePlanificacionManager planificacionManager= new SimplePlanificacionManager();
        int anioActual= FechaUtil.getAnioActual();
        try {
            conexionSAP = ConexionSAP.getConexionSAP();
            conexionSAP.RegistrarRFC("ZHR_RFC_MI_EQUIPO");
            conexionSAP.IngresarDatosInput(idUsuario, "I_UNAME");
            conexionSAP.EjecutarRFC();
            Table table = conexionSAP.rFC.getTableParameterList().getTable("T_EQUIPO");

            for (int i = 0; i < table.getNumRows(); i++) {
                table.setRow(i);
                String[] fila = table.getField("LINEA").getString().split("[|]");
                PersonalSap personalSap = new PersonalSap();
                personalSap.setIdUsuario(fila[0]);
                personalSap.setCodigoPersonal(fila[1]);
                personalSap.setNombreCompleto(fila[2]);
                personalSap.setCodigoPosicion(fila[3]);
                personalSap.setNombrePosicion(fila[4]);
                personalSap.setSaldoVacaciones((int) (Double.parseDouble(fila[5])));
//                alex
                System.out.println("excluirIdUsuario: " + excluirIdUsuario + " personalSap.getIdUsuario(): " + personalSap.getIdUsuario());
                if (!personalSap.getIdUsuario().equals("")) {
                    if (!excluirIdUsuario.trim().toUpperCase().equals(personalSap.getIdUsuario().trim().toUpperCase())) {
                        //System.out.println("entro");
                        /////personalSap.setDiasPlanificados(equipoDao.getSumDiasPlanificados(personalSap.getIdUsuario()));
                        
                        personalSap.setEstado(planificacionManager.consultarEstado(personalSap.getIdUsuario(), anioActual, idPuestoUsuario));
                        System.out.println("Estado: " + personalSap.getEstado());
                        personalSap.setDiasPlanificados(0);
                        personals.add(personalSap);
                    }     
                }
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            conexionSAP.DesconectarSAP();
        }

        return personals;
    }
    
    public String consultarSubDivision(String division, String subdivision) {
        System.out.println("consultarSubDivision " + division + " " + subdivision);
        ConexionSAP conexionSAP = new ConexionSAP();
        String result= "";
        try {
            conexionSAP = ConexionSAP.getConexionSAP();
            conexionSAP.RegistrarRFC("ZMM_RFCFN_LEER_SUBDIVISION_SGV");
            conexionSAP.IngresarDatosInput(division, "WERKS");
            conexionSAP.IngresarDatosInput(subdivision, "BTRTL");
            conexionSAP.EjecutarRFC();
            result = conexionSAP.rFC.getExportParameterList().getString("BTEXT");

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            conexionSAP.DesconectarSAP();
        }
        System.out.println("result: " + result);
        return result;
    }
    
    public String[] listarAnalistas(String division) {
        System.out.println("consultarSubDivision " + division );
        ConexionSAP conexionSAP = new ConexionSAP();
        String result= "";
        String[] arrayCorreos = null;
        try {
            conexionSAP = ConexionSAP.getConexionSAP();
            conexionSAP.RegistrarRFC("ZMM_RFCFN_CORREOS_ANALISTA_SGV");
            conexionSAP.IngresarDatosInput(division, "CODDIV");
            conexionSAP.EjecutarRFC();
            Table table = conexionSAP.rFC.getTableParameterList().getTable("T_CORREOS");
            arrayCorreos = new String[table.getNumRows()];
            for (int i = 0; i < table.getNumRows(); i++) {
                table.setRow(i);
                arrayCorreos[i] = table.getField("LINEA").getString();
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            conexionSAP.DesconectarSAP();
        }
        System.out.println("result: " + result);
        return arrayCorreos;
    }
    
}
